<%-- 
    Document   : relatorioImprodutividadeAnalitico
    Created on : 08/11/2010, 15:16:37
    Author     : Thiago
--%>

<%@page import="java.util.Date"%>
<%@page import="crypt.Crypt"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="bo.*"%>
<%@page import="beans.*"%>
<%@page import="autenticacao.Sessao"%>
<%

            String moduleId = "28";
            Crypt crypt = new Crypt();
            try {
                crypt.setKey(crypt.Decifragem((String) session.getAttribute("userPhrase")));
                String desafio = crypt.Cifragem(moduleId + "@" + ferramentas.DataHora.formatarDataHora(ferramentas.DataHora.retornarDataHoraAtual(), ferramentas.DataHora.DATE_TIME_FORMAT));
                if (!(new Sessao(session).validarSessao(desafio))) {
                    response.sendRedirect("/" + request.getContextPath());
                }
            } catch (Exception e) {
                response.sendRedirect("/" + request.getContextPath());
            }

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Gestor Operacional</title>
        <link href="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>css/style.css" type="text/css" rel="stylesheet"/>
        <link href="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>css/table.css" type="text/css" rel="stylesheet"/>
        <link href="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>css/anytime.css" rel="stylesheet" type="text/css"/>
        <script type="text/javascript" src="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>scripts/jquery.js"></script>
        <script type="text/javascript" src="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>scripts/anytime.js"></script>
        <script type="text/javascript" src="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>scripts/anytimetz.js"></script>
        <script type="text/javascript" src="<%out.print(new String(request.getRequestURL()).split("pages")[0]);%>scripts/table.js"></script>
    </head>
    <body>
        <table width="100%">
            <tr>
                <td>
                    <jsp:include page = "../menu.jsp" flush = "true"/>
                </td>
            </tr>

            <tr align="center">
                <td><br/><br/>
                    <form name="form1" action="relatorioImprodutividadeAnalitico.jsp" method="post">
                        <input type="hidden" name="exibirRelatorio" value="true">
                        <table border="1" cellspacing="0" width="445"  bgcolor="#FFFFFF">
                            <tr>
                                <td width="115">Colaborador:</td>
                                <td align="center">
                                    <select name="colaborador" size="1">
                                        <option value="" selected>Todos</option>
                                        <%
                                                    ArrayList<Colaborador> alc = null;
                                                    try {
                                                        alc = new ColaboradorBO().recuperarColaborador(null);
                                                    } catch (Exception e) {
                                                        out.println(e.getMessage());
                                                    }
                                                    if (alc != null) {
                                                        for (int i = 0; i < alc.size(); i++) {
                                                            out.println("<option value=\"" + alc.get(i).getMatricula() + "\">" + alc.get(i).getMatricula() + " - " + alc.get(i).getNome() + "</option>");
                                                        }
                                                    }
                                        %>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <td>Data Inicio:</td>
                                <td align="center">
                                    <input id="data" name="data" type="text" maxlength="10" size="10">
                                    <script type="text/javascript">
                                        AnyTime.picker( "data",
                                        { format: "%d/%m/%z", firstDOW: 0 } );
                                    </script>
                                </td>
                            </tr>
                            <tr>
                                <td>Data Fim:</td>
                                <td align="center">
                                    <input id="dataFim" name="dataFim" type="text" maxlength="10" size="10">
                                    <script type="text/javascript">
                                        AnyTime.picker( "dataFim",
                                        { format: "%d/%m/%z", firstDOW: 0 } );
                                    </script>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" align="center">
                                    <input type="submit">
                                </td>
                            </tr>
                        </table>
                    </form>
                </td>
            </tr>
            <tr>
                <td align="center"><br/><br/><hr>
                    <%
                                if ((request.getParameter("exibirRelatorio") != null) && request.getParameter("exibirRelatorio").equals("true")) {
                                    Date dataIni = ferramentas.DataHora.retornarDataHora(ferramentas.DataHora.formatarDataHora(ferramentas.DataHora.retornarDataHoraAtual(), ferramentas.DataHora.DATE_FORMAT) + " 00:00:00", ferramentas.DataHora.DATE_TIME_FORMAT);
                                    Date dataFim = ferramentas.DataHora.retornarDataHora(ferramentas.DataHora.formatarDataHora(ferramentas.DataHora.retornarDataHoraAtual(), ferramentas.DataHora.DATE_FORMAT) + " 23:59:59", ferramentas.DataHora.DATE_TIME_FORMAT);
                                    ArrayList<Colaborador> acolab = null;
                                    if ((request.getParameter("colaborador") != null) && (request.getParameter("colaborador").length() > 0)) {
                                        Colaborador colaborador = new Colaborador();
                                        colaborador.setMatricula((String) request.getParameter("colaborador"));
                                        acolab = new ArrayList<Colaborador>();
                                        acolab.add(colaborador);
                                    }
                                    if ((request.getParameter("data") != null) && (request.getParameter("data").length() > 0)) {
                                        dataIni = ferramentas.DataHora.retornarDataHora(request.getParameter("data") + " 00:00:00", ferramentas.DataHora.DATE_TIME_FORMAT);
                                    }
                                    if ((request.getParameter("dataFim") != null) && (request.getParameter("dataFim").length() > 0)) {
                                        dataFim = ferramentas.DataHora.retornarDataHora(request.getParameter("dataFim") + " 23:59:59", ferramentas.DataHora.DATE_TIME_FORMAT);
                                    }
                                    ArrayList<RelImprodutividade> arel = new ArrayList<RelImprodutividade>();
                                    try {
                                        if (acolab == null) {
                                            Colaborador colab = new Colaborador();
                                            colab.setStatus(Colaborador.STS_ATIVO);
                                            acolab = new ColaboradorBO().recuperarColaborador(colab);
                                        }
                                        for (int i = 0; i < acolab.size(); i++) {
                                            Date aux = new Date(dataIni.getTime());
                                            boolean diaUtil = false;
                                            while (!diaUtil) {
                                                Producao prod = new Producao();
                                                prod.setDtExpediente(aux);
                                                ArrayList<Producao> aprod = new ProducaoBO().recuperarProducao(prod);
                                                if ((aprod != null) && (!aprod.isEmpty())) {
                                                    diaUtil = true;
                                                } else {
                                                    aux = ferramentas.DataHora.avancarUmDia(aux);
                                                }
                                            }
                                            while (aux.getTime() <= dataFim.getTime()) {
                                                Producao producao = new Producao();
                                                Ausencia ausencia = new Ausencia();
                                                producao.setDtExpediente(ferramentas.DataHora.retornarDataHora(ferramentas.DataHora.formatarDataHora(aux, ferramentas.DataHora.DATE_FORMAT) + " 00:00:00", ferramentas.DataHora.DATE_TIME_FORMAT));
                                                producao.setDtExpedienteFim(ferramentas.DataHora.retornarDataHora(ferramentas.DataHora.formatarDataHora(aux, ferramentas.DataHora.DATE_FORMAT) + " 23:59:59", ferramentas.DataHora.DATE_TIME_FORMAT));
                                                producao.setColaborador(acolab.get(i));
                                                ausencia.setDtAusencia(ferramentas.DataHora.retornarDataHora(ferramentas.DataHora.formatarDataHora(aux, ferramentas.DataHora.DATE_FORMAT) + " 00:00:00", ferramentas.DataHora.DATE_TIME_FORMAT));
                                                ausencia.setDtAusenciaSuperior(ferramentas.DataHora.retornarDataHora(ferramentas.DataHora.formatarDataHora(aux, ferramentas.DataHora.DATE_FORMAT) + " 23:59:59", ferramentas.DataHora.DATE_TIME_FORMAT));
                                                ausencia.setColaborador(acolab.get(i));
                                                ArrayList<Ausencia> aause = new AusenciaBO().recuperarAusencia(ausencia);
                                                if ((aause == null) || ((aause != null) && (aause.size() == 0))) {
                                                    ArrayList<Producao> aprod = new ProducaoBO().recuperarProducao(producao);
                                                    String dia = ferramentas.Texto.padronizarTexto(ferramentas.DataHora.formatarDataHora(aux, "E").toUpperCase(), true);
                                                    if ((aprod == null) || ((aprod != null) && (aprod.size() == 0))) {
                                                        if (dia.startsWith("SA")) {
                                                            Atribuicao atrib = new Atribuicao();
                                                            atrib.setColaborador(acolab.get(i));
                                                            atrib.setStatus(Atribuicao.STS_ATIVO);
                                                            ArrayList<Atribuicao> aatrib = new AtribuicaoBO().recuperarAtribuicao(atrib);
                                                            if ((aatrib != null)
                                                                    && (aatrib.size() > 0)
                                                                    && (aatrib.get(0).getCargo() != null)
                                                                    && (aatrib.get(0).getCargo().getId() >= 1)
                                                                    && (aatrib.get(0).getCargo().getId() <= 5)) {
                                                                Date auxd = new Date(aux.getTime());
                                                                for (int j = 0; j < 8; j++) {
                                                                    auxd = ferramentas.DataHora.retrocederUmDia(auxd);
                                                                }
                                                                aause = new AusenciaBO().recuperarAusencia(ausencia);
                                                                aprod = new ProducaoBO().recuperarProducao(producao);
                                                            }
                                                        }
                                                        if ((aause == null) || ((aause != null) && (aause.isEmpty()))) {
                                                            if ((aprod == null) || ((aprod != null) && (aprod.isEmpty()))) {
                                                                RelImprodutividade rel = new RelImprodutividade();
                                                                rel.setColaborador(acolab.get(i));
                                                                rel.setData(aux);
                                                                rel.setDescricao(RelImprodutividade.SEM_PROCUAO_SEM_AUSENCIA);
                                                                arel.add(rel);
                                                            }
                                                        }
                                                    }
                                                } else {
                                                    ArrayList<Producao> aprod = new ProducaoBO().recuperarProducao(producao);
                                                    if ((aprod != null) && (!aprod.isEmpty())) {
                                                        RelImprodutividade rel = new RelImprodutividade();
                                                        rel.setColaborador(acolab.get(i));
                                                        rel.setData(aux);
                                                        rel.setDescricao(RelImprodutividade.PRODUCAO_COM_AUSENCIA);
                                                        arel.add(rel);
                                                    }
                                                }
                                                aux = ferramentas.DataHora.avancarUmDia(aux);
                                            }
                                        }
                                    } catch (Exception e) {
                                        out.println(e.getMessage());
                                    }
                                    if ((arel != null) && (arel.size() == 0)) {
                                        out.println("<table><tr><td align=\"center\">Nenhum resultado.</td></tr></table>");
                                    } else {
                    %>
                    <br/>
                    <br/>
                    <div class="widget_tableDiv">
                        <table id="myTable">
                            <thead align="center">
                                <tr>
                                    <td align="center"><b>Colaborador</b></td>
                                    <td align="center"><b>Descrição</b></td>
                                    <td align="center"><b>Data</b></td>
                                    <td align="center"><b>Dia da Semana</b></td>
                                </tr>
                            </thead>
                            <tbody class="scrollingContent">
                                <%
                                                                        for (int i = 0; i < arel.size(); i++) {
                                                                            out.println("<tr>");
                                                                            out.println("<td align=\"center\">" + arel.get(i).getColaborador().getMatricula() + " " + arel.get(i).getColaborador().getNome() + "</td>");
                                                                            out.println("<td>" + arel.get(i).getDescricao() + "</td>");

                                                                            String aux = ferramentas.DataHora.formatarDataHora(arel.get(i).getData(), ferramentas.DataHora.DATE_FORMAT);
                                                                            if (aux == null) {
                                                                                aux = " - ";
                                                                            }
                                                                            out.println("<td align=\"center\">" + aux + "</td>");

                                                                            aux = ferramentas.DataHora.formatarDataHora(arel.get(i).getData(), "EEEE");
                                                                            if (aux == null) {
                                                                                aux = " - ";
                                                                            }
                                                                            out.println("<td align=\"center\">" + aux + "</td>");

                                                                            out.flush();

                                                                            out.println("</tr>");
                                                                        }
                                %>
                            </tbody>
                        </table>
                    </div>
                    <script type="text/javascript">
                        initTableWidget('myTable',900,350,Array('S','S','S','S','S','S','S'));
                    </script>
                    <br><br>
                    <%
                                    }
                                }
                    %>
                </td>
            </tr>
        </table>
    </body>
</html>